#include "MyIni.h"
#include <fstream> 
#include <iostream>
#include <Tools/MyTools.h>
#include <boost/lexical_cast.hpp>

CMyIni::CMyIni(void)
{
	m_isInit = ReadText();
}

CMyIni::~CMyIni(void)
{
}

bool CMyIni::ReadText()
{
	std::tuple<bool, std::string> tup = GetJsonStr("config.json");
	if (std::get<0>(tup))
	{
		ParseJson(std::get<1>(tup));
	}
	else
	{
		return false;
	}
}

bool CMyIni::ParseJson( const std::string & str )
{
	//m_verTOaddress.clear();
	//std::vector<std::string>().swap(m_verTOaddress);
	CMyJson::JsonRoot json;
	CMyJson::InitJson(str, json);

	m_font = CMyJson::GetStrValue(json, "font");
	m_nwigth = CMyJson::GetValue<int>(json, "nwigth");
	m_nHeight = CMyJson::GetValue<int>(json, "nHeight");

	int i = 0;
	if (!json["b_r"].isNull())
	{
		m_b_r[0] = json["b_r"][i + 0].asInt();
		m_b_r[1] = json["b_r"][i + 1].asInt();
		m_b_r[2] = json["b_r"][i + 2].asInt();
	}
	if (!json["f_r"].isNull())
	{
		m_f_r[0] = json["f_r"][i + 0].asInt();
		m_f_r[1] = json["f_r"][i + 1].asInt();
		m_f_r[2] = json["f_r"][i + 2].asInt();
	}
	
	//IGameBase::isLog = CMyJson::GetValue<bool>(json, "isLog");
	ParseDBinfo(json["dbInfo"], m_dbInfo);


	return true;
}

bool CMyIni::ParseDBinfo(CMyJson::JsonRoot & json, DatabaseInfo & dbinfo)
{


	dbinfo.name = CMyJson::GetStrValue(json, "name");
	dbinfo.host = CMyJson::GetStrValue(json, "host");
	dbinfo.user = CMyJson::GetStrValue(json, "user");
	dbinfo.password = CMyJson::GetStrValue(json, "password");
	dbinfo.port = CMyJson::GetStrValue(json, "port");

	return true;
}

void CMyIni::OnSave()
{	
	CMyJson::JsonRoot json;
	CMyJson::AddArrayValue(json, "b_r", m_b_r[0]);
	CMyJson::AddArrayValue(json, "b_r", m_b_r[1]);
	CMyJson::AddArrayValue(json, "b_r", m_b_r[2]);
	CMyJson::AddArrayValue(json, "f_r", m_f_r[0]);
	CMyJson::AddArrayValue(json, "f_r", m_f_r[1]);
	CMyJson::AddArrayValue(json, "f_r", m_f_r[2]);

	CMyJson::AddValue(json, "nwigth", m_nwigth);
	CMyJson::AddValue(json, "nHeight", m_nHeight);
	CMyJson::AddValue(json, "font", m_font);

	CMyJson::AddValue(json["dbInfo"], "name", m_dbInfo.name);
	CMyJson::AddValue(json["dbInfo"], "host", m_dbInfo.host);
	CMyJson::AddValue(json["dbInfo"], "user", m_dbInfo.user);
	CMyJson::AddValue(json["dbInfo"], "password", m_dbInfo.password);
	CMyJson::AddValue(json["dbInfo"], "port", m_dbInfo.port);

	std::string str = CMyJson::GetJsonStr(json);
	SaveText(str, "config.json");
}
